package com.link.base.base.approval.service;

import com.link.base.base.approval.model.ApprovalOperate;
import com.link.base.base.approval.model.Flow;
import com.link.base.base.approval.model.OtherFlowInfo;
import com.link.core.basic.service.BasicService;

/**
 * Copyright  hande Company. All Rights Reserved.
 *
 * @author  unknwon
 * @date:   2018/11/8 14:37
 * @version 1.0
 */

public interface ApprovalOperateService extends BasicService<ApprovalOperate> {

    /**
     * 执行审核回调函数
     *
     * @param flow
     * @param operateId
     * @param nextNodeSn
     * @throws Exception
     */
    public void doOperateService(Flow flow, Long operateId, String nextNodeSn) throws Exception;

    /**
     * 执行其他操作
     *
     * @param objectId
     * @param operateId
     * @param otherInfo
     * @throws Exception
     */
    public void doOtherOperate(Long objectId, Long operateId, OtherFlowInfo otherInfo) throws Exception;

    /**
     * 获取下一操作节点序号
     * 如果有判断条件，先根据判断条件进行处理
     *
     * @param objectId
     * @param operateId
     * @return String
     * @throws  Exception
     */
    public String getDecideWithNextNodeNo(Long objectId, Long operateId) throws Exception;
}
